home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / renderlib40 / README < prev   
Encoding:
Text File  |  2003-02-14  |  4.9 KB  |  137 lines

  1. Short:    render library v40
  2. Author:   Timm S. Müller
  3. Uploader: Timm S. Müller (tmueller@neoscientists.org)
  4. Type:     dev/misc
  5. Version:  40.7 (beta)
  6. Requires: os3.x (v39) and 68020/68881, or MorphOS 1.x
  7.  
  8. API-conformant re-implementation of render.library in ANSI C.
  9. this version is a drop-in replacement for render.library,
  10. which was written in 68k assembler (versions prior to v40).
  11.  
  12. if your software doesn't work with this release, submit problem
  13. reports to tmueller@neoscientists.org
  14.  
  15.  
  16. implementation notes
  17. -----------------------------
  18.  
  19. - RenderA() and ConvertChunky() now have additional return codes,
  20. REND_NO_DATA and CONV_NO_DATA respectively, if required
  21. arguments are missing. some other functions may check for
  22. illegal parameters as well, but don't rely on this.
  23.  
  24. - render.library objects (palettes, histograms, scaling-engines and
  25. mapping-engines) are inherently thread-safe. you do not need to
  26. explicitely protect them in multitasked use. (this may be a
  27. questionable choice, but that's the way render.library was designed
  28. originally.)
  29.  
  30. - many parametric 'issues' improved. scaling-engines, for example,
  31. seem to handle larger numbers correctly. histograms, however, still
  32. use 32bit integers and can overflow quite early.
  33.  
  34. - some calculations now use floating point arithmetics and better
  35. algorithms. brightness, for instance, is now calculated correctly
  36. (i.e. in the sense of 'lumincance' like in YUV) in SortPalette() and
  37. CreateAlphaArray().
  38.  
  39. - dithering to HAM is no longer supported. yuck.
  40.  
  41. - the bresenham-like integer scaling algorithm was better in the
  42. previous version. (float sucks if you can't handle it. should be fixed
  43. some day. :)
  44.  
  45. - mapping-engines are currently fake entities and do not actually lead
  46. to improved performance. they don't harm either. but you don't know
  47. this, simply stick to the autodocs. maybe they'll be put back into
  48. action later.
  49.  
  50. - all histograms are now digital trees, using a much more
  51. sophisticated algorithm than before. albeit much more elegant and
  52. memory-saving, this is probably slower than before.
  53.  
  54.  
  55. performance issues
  56. -----------------------------
  57.  
  58. - the 68k build is actually optimized for 68060 processors.
  59.  
  60. - on 68060 processors, most functions in this implementation are not
  61. significantly slower than before.
  62.  
  63. - expect a massive speed loss on <68040.
  64.  
  65. - chunky to bitmap conversion (and vice versa) is implemented in an
  66. extremely lazy way. these functions do crawl.
  67.  
  68. - quantization is faster and more accurate than before.
  69.  
  70. - general memory consumption is lower than before.
  71.  
  72.  
  73.  
  74. recent changes
  75. -----------------------------
  76.  
  77.     - morphos version 40.7 included
  78.  
  79.   40.7
  80.     - MixAlphaChannelA() now produces the intended behavior of
  81.       versions prior to v40. The old library was buggy too, and did
  82.       not handle a single second alpha channel correctly, as it
  83.       seems. Reported by Matthias Böcker.
  84.     - added GCC inline (fdpragma special 40). the proto file was
  85.       created using fdpragma special 35, and modified to include
  86.       the original SAS/C-style pragmas as well
  87.     - Morphos version 40.6 included
  88.     - turned around ratio argument interpretation in MixRGBArrayA().
  89.       it is now in compliance with the old version again. Reported
  90.       by Andreas Falkenhahn. note: some other functions with ratio
  91.       arguments are untested yet
  92.     - library base was NOT freed correctly in case of LibInit()
  93.       failure, now fixed
  94.  
  95.   40.6
  96.     - more changes from Gunther Nikl applied: debug macro, register
  97.       argument macro, padding of libbase fields, compiler warnings.
  98.     - reduced the excessive amount of automatic inlinings in the
  99.       gcc release build, which leads to a much smaller binary. this
  100.       also fixes the misplaced LibNull() entry, and the result is
  101.       still much faster than sas/c. okay, agreed, gcc is it.
  102.     - more source and build cleanups
  103.  
  104.   40.5
  105.     - CreateAlphaArrayA() has been fixed. a broken macro was used.
  106.       reported by Bernd Roesch.
  107.     - fixed a freemem(null) condition that showed up in MuForce.
  108.       reported by hexaae.
  109.     - improvements to the build procedure added by Gunther Nikl
  110.     - morphos version updated to 40.4
  111.  
  112.   40.4
  113.     - dithered rendering with neither RND_PenTable nor
  114.       RND_OffsetColorZero rendered to a table of black pens. fixed.
  115.  
  116.   40.3
  117.     - morphos version compiled by Sigbjørn Skjæret. added.
  118.     - HAM8 rendering was not 100% accurate. should be correct now.
  119.     - added missing semaphore locks
  120.     - minor cleanup
  121.  
  122.   40.2
  123.     - the remaining alpha-channel functions have been implemented.
  124.     
  125.   40.1
  126.     - source added to the package.
  127.     - major overall performance improvements
  128.     - SortPalette() completed
  129.     - rendering to HAM6 and HAM8 has been completed. dithering to HAM
  130.       modes is no longer supported, sorry.
  131.     - tags to RGBArrayDiversity() and ChunkyArrayDiversity() did not
  132.       correctly handle palette/mapengine arguments. fixed.
  133.     - definitions added in render/render.h: CONV_NO_DATA, REND_NO_DATA
  134.  
  135.   40.0
  136.     - rewritten in C
  137.